package viqiang.ye.pattern.single;

public class SingleObject {
    /**
     * 是否 Lazy 初始化：否
     * 是否多线程安全：是, 它基于 classloader 机制避免了多线程的同步问题
     * 描述：这种方式比较常用，但容易产生垃圾对象。
     * 优点：没有加锁，执行效率会提高。
     * 缺点：类加载时就初始化，浪费内存。
     *使用场景：
     * 1、要求生产唯一序列号。
     * 2、WEB 中的计数器，不用每次刷新都在数据库里加一次，用单例先缓存起来。
     * 3、创建的一个对象需要消耗的资源过多，比如 I/O 与数据库的连接等。
     */
    private static final SingleObject singleObject = new SingleObject();
    //私有构造器，外部将不能使用调用此构造器
    private SingleObject() {
    }
    public static SingleObject getInstance() {
        return singleObject;
    }

    public String getMessage() {
        return "single object";
    }

}
